/**
 * 正则表达式用来定义一些字符串的规则，计算机可以根据正则表达式，来检查一个字符串是否符合规则
 *
 * 创建正则表达式：
 *  var 变量 = new RegExp('正则表达式', '匹配模式');
 *  在我们这个构造函数中可以传递一个匹配模式作为第二个参数，可以是：
 *      i: 忽略大小写
 *      g：全局匹配模式
 *
 *  正则表达式的方法：
 *      test();
 *      使用这个方法可以用来检查一个字符串是否符合正则表达式的规则。
 * */

/**创建正则表达式*/
var reg = new RegExp("abc", "i");
var str = "12ABC345";
console.log(reg.test(str)); // 如果字符串中含有abc则返回true，否则返回false


console.log("=======================================");

/**
 * 使用字面量来创建个正则表达式
 * 语法：
 *      var 变量 = /正则表达式/匹配模式
 *
 * 使用字面量的方式创建正则表达式更加简单，使用构造函数的方式创建正则表达式更加的灵活。
 *
 * /a|b/  使用 | 表示或者的意思
 * []里的内容也是或者的关系[ab]
 * [a-z]任意小写字母
 * [A-Z]任意大写字母
 * [A-z]任意字母
 * [^ab]不包含ab
 * */

var reg2 = /a/i;
var str2 = "A";
console.log(reg2.test(str2));

console.log("================字符串和正则相关的方法=======================");

/**
 * split();
 *      可以将一个字符串拆分为一个数组，方法中可以传递一个字符串作为参数，这样方法将会根据正则表达式去拆分字符串
 *      该方法即使不指定全局匹配，也会全部都进行拆分
 *
 * search();
 *      可以搜索字符串中是否含有指定内容
 *          如果搜索到指定内容，则会返回第一次出现的索引，如果没有搜索到返回-1
 *          它可以接收一个正则表达式作为参数，然后会根据正则表达式去检索字符串
 *          search只会查找第一个，即使设置了全局匹配也没用
 *
 * match();
 *      可以根据正则表达式，从一个字符串中将符合条件的内容提取出来
 *      默认情况下我们的match();只会找到第一个符合要求的内容，找到以后就停止检索
 *      我们可以设置正则表达式为全局匹配模式，这样就会匹配到所有内容了。
 *      match();会将匹配到的内容封装到一个数组中返回，即使只查询到一个结果
 *
 * replace();
 *      可以将字符串中指定内容替换为新的内容
 *      参数：
 *          被替换的内容
 *          新的内容
 *      默认只会替换第一个，这时可以使用一个正则表达式作为参数传递，则可以替换全部
 *
 *
 * */

/**
 * 正则表达式语法：
 *      量词：通过量词可以设置一个内容出现的次数
 *          {n} 正好出现n次
 *          量词只对他前面的内容起作用
 *          {m, n}出现m-n次
 *          {m,}出现m次以上
 *          + 至少1个，相当于{1，}
 *          * 0个或多个相当于{0，}
 *          ？ 0个或1个，相当于{0,1}
 *          ^表示开头
 *          $表示结尾
 * 如果正则表达式中同时使用^$,则要求字符串必须完全符合正则表达式
 *          .表示任意字符
 *          在正则表达式中使用\作为转义字符
 *          单纯的表示.可以使用 \.
 *
 *
 *
 *
 *
 * */

// 去除开头或者结尾的空格
var str = "            he     llo        ";
console.log(str);
var newStr = str.replace(/^\s*|\s*$/g, "");
console.log(newStr);

